export interface SwiperConfig {
  maxList: number;
  list: {
    img: string;
    imgTitle: string;
    info: {
      title: string;
      value: string;
      tips: string;
      max: number;
    }[];
  }[];
}

export interface StyleConfig {
  title: string;
  tabVal: number;
  tabList: { name: string }[];
}

export interface FilletConfig {
  title: string;
  type: number;
  list: { val: string; icon: string }[];
  valName: string;
  val: number;
  min: number;
  valList: { val: number }[];
}

export interface PositionConfig {
  title: string;
  tabVal: number;
  tabList: { name: string }[];
}

export interface ToneConfig {
  title: string;
  tabVal: number;
  tabList: { name: string }[];
}

export interface ColorConfig {
  title: string;
  default: { item: string }[];
  color: { item: string }[];
}

export interface ValueConfig {
  title: string;
  val: number;
  min: number;
}

export interface BannerSwiperProps {
  config: {
    styleConfig: StyleConfig;
    swiperConfig: SwiperConfig;
    docConfig: StyleConfig;
    docPosition: PositionConfig;
    toneConfig: ToneConfig;
    dotColor: ColorConfig;
    dotBgColor: ColorConfig;
    filletImg: FilletConfig;
    imgConfig: ValueConfig;
    bgColor: ColorConfig;
    topConfig: ValueConfig;
    bottomConfig: ValueConfig;
    prConfig: ValueConfig;
    mbConfig: ValueConfig;
  };
  colorStyle?: {
    theme: string;
  };
}

export interface BannerSwiperEmits {
  (e: "update:config", value: BannerSwiperProps["config"]): void;
}

export interface BannerSwiperInstance {
  refreshConfig: () => void;
}
